package com.ult.dao;

import java.util.List;

import com.ult.model.Livro;

/**
 * classe responsavel pela persistencia
 * insert, remove, altera
 * @author gustavo
 *@category persistencia
 */

public class LivroDAO extends DAO{

	/**
	 * inserir livro
	 * @param cdLivro
	 * @param livro
	 * @return
	 */
	public boolean insertlivro( Livro livro ) {


		String sql =
		
				" INSERT INTO LIVRO" +
						"(nome_livro, tx_autor, tx_descricao, tx_sintese, tx_genero, edicao, tx_ano_pub)" +
						"VALUES ('"+
						livro.getNomeLivro()+"','"+
						livro.getAutor()+"','"+
						livro.getDescricao()+"','"+
						livro.getSintese()+"','"+
						livro.getGenero()+"','"+
						livro.getEdicao()+"','"+
						livro.getAnoPub()+"')";

		return this.executar(sql);
	}


	/**
	 * alterar livro
	 * @param cdLivro
	 * @param livro
	 * @return
	 */
	public boolean alteralivro( Integer cdLivro, Livro livro ) {

		String sql = 
				"UPDATE livro SET  " +
						"nome_livro='"+livro.getNomeLivro()+"'," +
						"tx_autor='"+livro.getAutor()+"',"+
						"tx_descricao='"+livro.getDescricao()+"',"+
						"tx_sintese='"+livro.getSintese()+"'," +
						"tx_genero='"+livro.getGenero()+"',"+
						"edicao='"+livro.getEdicao()+"',"+
						"tx_ano_pub="+livro.getAnoPub()+" WHERE cd_livro="+cdLivro+"";

		return this.executar(sql);
	}


	/**
	 * remover livro
	 * @param cdLivro
	 * @param livro
	 * @return
	 */
	public boolean deletarlivro ( Integer cdLivro) {

		String sql = " DELETE  FROM livro  WHERE cd_livro = "+cdLivro;
		
		return this.executar(sql);
	}
	
	
	public boolean verificaExist (Integer cdLivro){
		String sql = "SELECT cd_livro FROM livro " +
						"WHERE cd_livro="+cdLivro;
		return this.executar(sql);
	}

	
	
	public List<Livro> listarTodos( ) {
		
		String sql = "SELECT nome_livro, tx_autor, tx_genero from livro";
		
		return this.listar(sql);
		
	}
	
	
	public List<Livro> procurarPorNomeLivro( String nome ) {
		String sql = 
				"SELECT nome_livro, tx_autor, tx_genero FROM livro " +
						"WHERE nome_livro like '%"+ nome + "%'";
		
		return this.listar(sql);
	}


//		private List<livro> listar( String sql ) {
//			
//        Connection con = null;
//        Statement stmnt = null;
//        ResultSet rs = null;
//        List<livro> livros = new ArrayList<livro>();
//        livro livro = null;
//        
// 		try {
//			Class.forName( Constantes.DRIVER);
//			
//			con = DriverManager.getConnection( Constantes.URL, Constantes.USERNAME, Constantes.PASSWD);
//			
//			stmnt = con.createStatement( );
//			
//			rs = stmnt.executeQuery( sql );
//			while ( rs.next() ) {
//				livro = new livro();
//				livro.setNomeLivro( rs.getString("nome_livro") );
//				livro.setAutor( rs.getString("tx_autor") );
//				livro.setGenero(rs.getString("tx_genero") );
//				livros.add( livro );
//			}
//		} catch ( SQLException se) {
//			while (se != null) {
//				System.out.println("State  : " + se.getSQLState());
//				System.out.println("Message: " + se.getMessage());
//				System.out.println("Error  : " + se.getErrorCode());
//
//				se = se.getNextException();
//			}
//		} catch ( ClassNotFoundException e) {
//			e.printStackTrace();
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			// Fecha ResultSset, Statement\PreparedStatement e Connection
//			try {
//				// Fecha ResultSet
//				if (rs != null)
//					rs.close();
//				// Fecha Statement
//					if (stmnt != null)
//						stmnt.close();
//				// Fecha conexao
//				if (con != null)
//					con.close();
//			} catch (SQLException SQLe) {
//				// Tratar SQLException
//				SQLe.printStackTrace();
//			}
//		}
//		return livros;
//	}
	
	
	
	
	
	


}
